🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / ui / src / commonMain / kotlin / org / meshtastic / core / ui / component / LazyColumnDragAndDropDemo.kt
Displaying Raw • Download
core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/component/LazyColumnDragAndDropDemo.kt 01cd54907d62cd90913d3d071b6bc240cae365ef (01cd5490) Text, 11.18 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.ui.component
Tff7b72import T7ee787androidx.compose.animation.core.Animatable
Tff7b72import T7ee787androidx.compose.animation.core.Spring
Tff7b72import T7ee787androidx.compose.animation.core.spring
Tff7b72import T7ee787androidx.compose.foundation.gestures.detectDragGesturesAfterLongPress
Tff7b72import T7ee787androidx.compose.foundation.gestures.scrollBy
Tff7b72import T7ee787androidx.compose.foundation.layout.Arrangement
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.ColumnScope
Tff7b72import T7ee787androidx.compose.foundation.layout.PaddingValues
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyItemScope
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyListItemInfo
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyListScope
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyListState
Tff7b72import T7ee787androidx.compose.foundation.lazy.itemsIndexed
Tff7b72import T7ee787androidx.compose.foundation.lazy.rememberLazyListState
Tff7b72import T7ee787androidx.compose.material3.Card
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.LaunchedEffect
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableFloatStateOf
Tff7b72import T7ee787androidx.compose.runtime.mutableIntStateOf
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.rememberCoroutineScope
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.geometry.Offset
Tff7b72import T7ee787androidx.compose.ui.graphics.graphicsLayer
Tff7b72import T7ee787androidx.compose.ui.hapticfeedback.HapticFeedback
Tff7b72import T7ee787androidx.compose.ui.hapticfeedback.HapticFeedbackType
Tff7b72import T7ee787androidx.compose.ui.input.pointer.pointerInput
Tff7b72import T7ee787androidx.compose.ui.platform.LocalHapticFeedback
Tff7b72import T7ee787androidx.compose.ui.tooling.preview.Preview
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787androidx.compose.ui.zIndex
Tff7b72import T7ee787kotlinx.coroutines.CoroutineScope
Tff7b72import T7ee787kotlinx.coroutines.channels.Channel
Tff7b72import T7ee787kotlinx.coroutines.launch
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.preview_footer
Tff7b72import T7ee787org.meshtastic.core.resources.preview_header
Tff7b72import T7ee787org.meshtastic.core.resources.preview_item
Tff7b72import T7ee787org.meshtastic.core.ui.theme.AppTheme
T8b949e// Derived in part from:
T8b949e// https://github.com/androidx/androidx/blob/c92ad2941368202b2d78b8d14c71bf81e9525944/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/LazyColumnDragAndDropDemo.kt
Tf0883e@Preview
Tf0883e@Composable
Tff7b72fun Td2a8ffLazyColumnDragAndDropDemoTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3AppTheme Tb4b4b4{
Tff7b72var Te6edf3list Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Te6edf3ListTb4b4b4(T79c0ff5T79c0ff0Tb4b4b4) Tb4b4b4{ Tffa657it Tb4b4b4}Tb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3listState Tff7b72= Te6edf3rememberLazyListStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3dragDropState Tff7b72=
Te6edf3rememberDragDropStateTb4b4b4(Te6edf3listStateTb4b4b4, Te6edf3headerCount Tff7b72= T79c0ff1Tb4b4b4) Tb4b4b4{ Te6edf3fromIndexTb4b4b4, Te6edf3toIndex Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Te6edf3fromIndex Tff7b72in Te6edf3listTb4b4b4.Te6edf3indices Tff7b72&Tff7b72& Te6edf3toIndex Tff7b72in Te6edf3listTb4b4b4.Te6edf3indicesTb4b4b4) Tb4b4b4{
Te6edf3list Tff7b72= Te6edf3listTb4b4b4.Te6edf3toMutableListTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{ Te6edf3addTb4b4b4(Te6edf3toIndexTb4b4b4, Te6edf3removeAtTb4b4b4(Te6edf3fromIndexTb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3LazyColumnTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3dragContainerTb4b4b4(Te6edf3dragDropState Tff7b72= Te6edf3dragDropStateTb4b4b4, Te6edf3haptics Tff7b72= Te6edf3LocalHapticFeedbackTb4b4b4.Te6edf3currentTb4b4b4)Tb4b4b4,
Te6edf3state Tff7b72= Te6edf3listStateTb4b4b4,
Te6edf3contentPadding Tff7b72= Te6edf3PaddingValuesTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3verticalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3spacedByTb4b4b4(T79c0ff1T79c0ff6.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3item Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3preview_headerTb4b4b4)Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4}
Te6edf3itemsIndexedTb4b4b4(Te6edf3listTb4b4b4, Te6edf3key Tff7b72= Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3item Tff7b72-Tff7b72> Te6edf3item Tb4b4b4}Tb4b4b4) Tb4b4b4{ Te6edf3indexTb4b4b4, Te6edf3item Tff7b72-Tff7b72>
Te6edf3DraggableItemTb4b4b4(Te6edf3dragDropStateTb4b4b4, Te6edf3index Tff7b72+ T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3Card Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3preview_itemTb4b4b4, Te6edf3itemTb4b4b4)Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3item Tb4b4b4{ Te6edf3TextTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3preview_footerTb4b4b4)Tb4b4b4, Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(T79c0ff2T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72fun Td2a8ffrememberDragDropStateTb4b4b4(
Te6edf3lazyListStateTb4b4b4: Te6edf3LazyListStateTb4b4b4,
Te6edf3headerCountTb4b4b4: Tffa657Int Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3onMoveTb4b4b4: Tb4b4b4(Tffa657IntTb4b4b4, Tffa657IntTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3DragDropState Tb4b4b4{
Tff7b72val Te6edf3scope Tff7b72= Te6edf3rememberCoroutineScopeTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3state Tff7b72= Te6edf3rememberTb4b4b4(Te6edf3lazyListStateTb4b4b4) Tb4b4b4{ Te6edf3DragDropStateTb4b4b4(Te6edf3lazyListStateTb4b4b4, Te6edf3headerCountTb4b4b4, Te6edf3scopeTb4b4b4, Te6edf3onMoveTb4b4b4) Tb4b4b4}
Te6edf3LaunchedEffectTb4b4b4(Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72while Tb4b4b4(Tff7b72trueTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3diff Tff7b72= Te6edf3stateTb4b4b4.Te6edf3scrollChannelTb4b4b4.Te6edf3receiveTb4b4b4(Tb4b4b4)
Te6edf3lazyListStateTb4b4b4.Te6edf3scrollByTb4b4b4(Te6edf3diffTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3state
Tb4b4b4}
Tff7b72class T56d364DragDropState
Te6edf3internal Tff7b72constructorTb4b4b4(
Tff7b72private Tff7b72val Te6edf3stateTb4b4b4: Te6edf3LazyListStateTb4b4b4,
Tff7b72private Tff7b72val Te6edf3headerCountTb4b4b4: Tffa657IntTb4b4b4,
Tff7b72private Tff7b72val Te6edf3scopeTb4b4b4: Te6edf3CoroutineScopeTb4b4b4,
Tff7b72private Tff7b72val Te6edf3onMoveTb4b4b4: Tb4b4b4(Tffa657IntTb4b4b4, Tffa657IntTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72private Tff7b72var Te6edf3draggingItemIndex Tff7b72by Te6edf3mutableStateOfTff7b72<Tffa657Int?Tff7b72>Tb4b4b4(Tff7b72nullTb4b4b4)
Tff7b72val Te6edf3adjustedItemIndex
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3draggingItemIndexTff7b72?.Te6edf3minusTb4b4b4(Te6edf3headerCountTb4b4b4)
Tff7b72internal Tff7b72val Te6edf3scrollChannel Tff7b72= Te6edf3ChannelTff7b72<Tffa657FloatTff7b72>Tb4b4b4(Tb4b4b4)
Tff7b72private Tff7b72var Te6edf3draggingItemDraggedDelta Tff7b72by Te6edf3mutableFloatStateOfTb4b4b4(T79c0ff0fTb4b4b4)
Tff7b72private Tff7b72var Te6edf3draggingItemInitialOffset Tff7b72by Te6edf3mutableIntStateOfTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72internal Tff7b72val Te6edf3draggingItemOffsetTb4b4b4: Tffa657Float
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72=
Te6edf3draggingItemLayoutInfoTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3item Tff7b72-Tff7b72> Te6edf3draggingItemInitialOffset Tff7b72+ Te6edf3draggingItemDraggedDelta Tff7b72- Te6edf3itemTb4b4b4.Te6edf3offset Tb4b4b4}
Tff7b72?: T79c0ff0f
Tff7b72private Tff7b72val Te6edf3draggingItemLayoutInfoTb4b4b4: Te6edf3LazyListItemInfo?
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3stateTb4b4b4.Te6edf3layoutInfoTb4b4b4.Te6edf3visibleItemsInfoTb4b4b4.Te6edf3firstOrNull Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3index Tff7b72=Tff7b72= Te6edf3draggingItemIndex Tb4b4b4}
Tff7b72internal Tff7b72var Te6edf3previousIndexOfDraggedItem Tff7b72by Te6edf3mutableStateOfTff7b72<Tffa657Int?Tff7b72>Tb4b4b4(Tff7b72nullTb4b4b4)
Te6edf3private Tff7b72set
Tff7b72internal Tff7b72var Te6edf3previousItemOffset Tff7b72= Te6edf3AnimatableTb4b4b4(T79c0ff0fTb4b4b4)
Te6edf3private Tff7b72set
Tff7b72internal Tff7b72fun Td2a8ffonDragStartTb4b4b4(Te6edf3offsetTb4b4b4: Te6edf3OffsetTb4b4b4)Tb4b4b4: Te6edf3LazyListItemInfo? Tff7b72= Te6edf3stateTb4b4b4.Te6edf3layoutInfoTb4b4b4.Te6edf3visibleItemsInfo
Tb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3contentType Tff7b72=Tff7b72= Te6edf3DRAG_DROP_CONTENT_TYPE Tb4b4b4}
Tb4b4b4.Te6edf3firstOrNull Tb4b4b4{ Te6edf3item Tff7b72-Tff7b72> Te6edf3offsetTb4b4b4.Te6edf3yTb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4) Tff7b72in Te6edf3itemTb4b4b4.Te6edf3offsetTb4b4b4.Tb4b4b4.Tb4b4b4(Te6edf3itemTb4b4b4.Te6edf3offset Tff7b72+ Te6edf3itemTb4b4b4.Te6edf3sizeTb4b4b4) Tb4b4b4}
Tff7b72?.Te6edf3also Tb4b4b4{
Te6edf3draggingItemIndex Tff7b72= Tffa657itTb4b4b4.Te6edf3index
Te6edf3draggingItemInitialOffset Tff7b72= Tffa657itTb4b4b4.Te6edf3offset
Tb4b4b4}
Tff7b72internal Tff7b72fun Td2a8ffonDragInterruptedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3draggingItemIndex Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3previousIndexOfDraggedItem Tff7b72= Te6edf3draggingItemIndex
Tff7b72val Te6edf3startOffset Tff7b72= Te6edf3draggingItemOffset
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{
Te6edf3previousItemOffsetTb4b4b4.Te6edf3snapToTb4b4b4(Te6edf3startOffsetTb4b4b4)
Te6edf3previousItemOffsetTb4b4b4.Te6edf3animateToTb4b4b4(
T79c0ff0fTb4b4b4,
Te6edf3springTb4b4b4(Te6edf3stiffness Tff7b72= Te6edf3SpringTb4b4b4.Te6edf3StiffnessMediumLowTb4b4b4, Te6edf3visibilityThreshold Tff7b72= T79c0ff1fTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3previousIndexOfDraggedItem Tff7b72= Tff7b72null
Tb4b4b4}
Tb4b4b4}
Te6edf3draggingItemDraggedDelta Tff7b72= T79c0ff0f
Te6edf3draggingItemIndex Tff7b72= Tff7b72null
Te6edf3draggingItemInitialOffset Tff7b72= T79c0ff0
Tb4b4b4}
Tff7b72internal Tff7b72fun Td2a8ffonDragTb4b4b4(Te6edf3offsetTb4b4b4: Te6edf3OffsetTb4b4b4) Tb4b4b4{
Te6edf3draggingItemDraggedDelta Tff7b72+Tff7b72= Te6edf3offsetTb4b4b4.Te6edf3y
Tff7b72val Te6edf3draggingItem Tff7b72= Te6edf3draggingItemLayoutInfo Tff7b72?: Tff7b72return
Tff7b72val Te6edf3startOffset Tff7b72= Te6edf3draggingItemTb4b4b4.Te6edf3offset Tff7b72+ Te6edf3draggingItemOffset
Tff7b72val Te6edf3endOffset Tff7b72= Te6edf3startOffset Tff7b72+ Te6edf3draggingItemTb4b4b4.Te6edf3size
Tff7b72val Te6edf3middleOffset Tff7b72= Te6edf3startOffset Tff7b72+ Tb4b4b4(Te6edf3endOffset Tff7b72- Te6edf3startOffsetTb4b4b4) Tff7b72/ T79c0ff2f
Tff7b72val Te6edf3targetItem Tff7b72=
Te6edf3stateTb4b4b4.Te6edf3layoutInfoTb4b4b4.Te6edf3visibleItemsInfoTb4b4b4.Te6edf3find Tb4b4b4{ Te6edf3item Tff7b72-Tff7b72>
Te6edf3middleOffsetTb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4) Tff7b72in Te6edf3itemTb4b4b4.Te6edf3offsetTb4b4b4.Tb4b4b4.Te6edf3itemTb4b4b4.Te6edf3offsetEnd Tff7b72&Tff7b72& Te6edf3draggingItemTb4b4b4.Te6edf3index Tff7b72!Tff7b72= Te6edf3itemTb4b4b4.Te6edf3index
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3targetItem Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3draggingItemTb4b4b4.Te6edf3index Tff7b72=Tff7b72= Te6edf3stateTb4b4b4.Te6edf3firstVisibleItemIndex Tff7b72|Tff7b72| Te6edf3targetItemTb4b4b4.Te6edf3index Tff7b72=Tff7b72= Te6edf3stateTb4b4b4.Te6edf3firstVisibleItemIndexTb4b4b4) Tb4b4b4{
Te6edf3stateTb4b4b4.Te6edf3requestScrollToItemTb4b4b4(Te6edf3stateTb4b4b4.Te6edf3firstVisibleItemIndexTb4b4b4, Te6edf3stateTb4b4b4.Te6edf3firstVisibleItemScrollOffsetTb4b4b4)
Tb4b4b4}
Te6edf3onMoveTb4b4b4.Te6edf3invokeTb4b4b4(Te6edf3draggingItemTb4b4b4.Te6edf3index Tff7b72- Te6edf3headerCountTb4b4b4, Te6edf3targetItemTb4b4b4.Te6edf3index Tff7b72- Te6edf3headerCountTb4b4b4)
Te6edf3draggingItemIndex Tff7b72= Te6edf3targetItemTb4b4b4.Te6edf3index
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72val Te6edf3overscroll Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3draggingItemDraggedDelta Tff7b72> T79c0ff0 Tff7b72-Tff7b72> Tb4b4b4(Te6edf3endOffset Tff7b72- Te6edf3stateTb4b4b4.Te6edf3layoutInfoTb4b4b4.Te6edf3viewportEndOffsetTb4b4b4)Tb4b4b4.Te6edf3coerceAtLeastTb4b4b4(T79c0ff0fTb4b4b4)
Te6edf3draggingItemDraggedDelta Tff7b72< T79c0ff0 Tff7b72-Tff7b72>
Tb4b4b4(Te6edf3startOffset Tff7b72- Te6edf3stateTb4b4b4.Te6edf3layoutInfoTb4b4b4.Te6edf3viewportStartOffsetTb4b4b4)Tb4b4b4.Te6edf3coerceAtMostTb4b4b4(T79c0ff0fTb4b4b4)
Tff7b72else Tff7b72-Tff7b72> T79c0ff0f
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3overscroll Tff7b72!Tff7b72= T79c0ff0fTb4b4b4) Tb4b4b4{
Te6edf3scrollChannelTb4b4b4.Te6edf3trySendTb4b4b4(Te6edf3overscrollTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72val Te6edf3LazyListItemInfoTb4b4b4.Te6edf3offsetEndTb4b4b4: Tffa657Int
Tff7b72getTb4b4b4(Tb4b4b4) Tff7b72= Tff7b72thisTb4b4b4.Te6edf3offset Tff7b72+ Tff7b72thisTb4b4b4.Te6edf3size
Tb4b4b4}
Tff7b72fun Te6edf3ModifierTb4b4b4.Td2a8ffdragContainerTb4b4b4(Te6edf3dragDropStateTb4b4b4: Te6edf3DragDropStateTb4b4b4, Te6edf3hapticsTb4b4b4: Te6edf3HapticFeedbackTb4b4b4)Tb4b4b4: Te6edf3Modifier Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3pointerInputTb4b4b4(Te6edf3dragDropStateTb4b4b4) Tb4b4b4{
Te6edf3detectDragGesturesAfterLongPressTb4b4b4(
Te6edf3onDrag Tff7b72= Tb4b4b4{ Te6edf3changeTb4b4b4, Te6edf3offset Tff7b72-Tff7b72>
Te6edf3changeTb4b4b4.Te6edf3consumeTb4b4b4(Tb4b4b4)
Te6edf3dragDropStateTb4b4b4.Te6edf3onDragTb4b4b4(Te6edf3offset Tff7b72= Te6edf3offsetTb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3onDragStart Tff7b72= Tb4b4b4{ Te6edf3offset Tff7b72-Tff7b72>
Te6edf3dragDropStateTb4b4b4.Te6edf3onDragStartTb4b4b4(Te6edf3offsetTb4b4b4) Tff7b72?: Tff7b72returnTf0883e@detectDragGesturesAfterLongPress
Te6edf3hapticsTb4b4b4.Te6edf3performHapticFeedbackTb4b4b4(Te6edf3HapticFeedbackTypeTb4b4b4.Te6edf3LongPressTb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3onDragEnd Tff7b72= Tb4b4b4{ Te6edf3dragDropStateTb4b4b4.Te6edf3onDragInterruptedTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3onDragCancel Tff7b72= Tb4b4b4{ Te6edf3dragDropStateTb4b4b4.Te6edf3onDragInterruptedTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72fun Te6edf3LazyItemScopeTb4b4b4.Td2a8ffDraggableItemTb4b4b4(
Te6edf3dragDropStateTb4b4b4: Te6edf3DragDropStateTb4b4b4,
Te6edf3indexTb4b4b4: Tffa657IntTb4b4b4,
Te6edf3modifierTb4b4b4: Te6edf3Modifier Tff7b72= Te6edf3ModifierTb4b4b4,
Te6edf3contentTb4b4b4: Tf0883e@Composable Te6edf3ColumnScopeTb4b4b4.Tb4b4b4(Te6edf3isDraggingTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3dragging Tff7b72= Te6edf3index Tff7b72=Tff7b72= Te6edf3dragDropStateTb4b4b4.Te6edf3adjustedItemIndex
Tff7b72val Te6edf3draggingModifier Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3draggingTb4b4b4) Tb4b4b4{
Te6edf3ModifierTb4b4b4.Te6edf3zIndexTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4.Te6edf3graphicsLayer Tb4b4b4{ Te6edf3translationY Tff7b72= Te6edf3dragDropStateTb4b4b4.Te6edf3draggingItemOffset Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3index Tff7b72=Tff7b72= Te6edf3dragDropStateTb4b4b4.Te6edf3previousIndexOfDraggedItemTb4b4b4) Tb4b4b4{
Te6edf3ModifierTb4b4b4.Te6edf3zIndexTb4b4b4(T79c0ff1fTb4b4b4)Tb4b4b4.Te6edf3graphicsLayer Tb4b4b4{ Te6edf3translationY Tff7b72= Te6edf3dragDropStateTb4b4b4.Te6edf3previousItemOffsetTb4b4b4.Te6edf3value Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ModifierTb4b4b4.Te6edf3animateItemTb4b4b4(Te6edf3fadeInSpec Tff7b72= Tff7b72nullTb4b4b4, Te6edf3fadeOutSpec Tff7b72= Tff7b72nullTb4b4b4)
Tb4b4b4}
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3thenTb4b4b4(Te6edf3draggingModifierTb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3contentTb4b4b4(Te6edf3draggingTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tff7b72const Tff7b72val Te6edf3DRAG_DROP_CONTENT_TYPE Tff7b72= Ta5d6ff"Ta5d6ffdrag-and-dropTa5d6ff"
T8b949e/**
* Extension function for [LazyListScope] with drag-and-drop functionality for indexed items.
*
* Wraps [itemsIndexed] function with [detectDragGesturesAfterLongPress] to enable long-press drag gestures and allow
* items in the list to be reordered using the provided [DragDropState].
*/
Tff7b72inline Tff7b72fun Tff7b72<Te6edf3TTff7b72> Te6edf3LazyListScopeTb4b4b4.Td2a8ffdragDropItemsIndexedTb4b4b4(
Te6edf3itemsTb4b4b4: Te6edf3ListTff7b72<Te6edf3TTff7b72>Tb4b4b4,
Te6edf3dragDropStateTb4b4b4: Te6edf3DragDropStateTb4b4b4,
Te6edf3noinline Te6edf3keyTb4b4b4: Tb4b4b4(Tb4b4b4(Te6edf3indexTb4b4b4: Tffa657IntTb4b4b4, Te6edf3itemTb4b4b4: Te6edf3TTb4b4b4) Tff7b72-Tff7b72> Tffa657AnyTb4b4b4)Tff7b72? Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3crossinline Te6edf3itemContentTb4b4b4: Tf0883e@Composable Te6edf3LazyItemScopeTb4b4b4.Tb4b4b4(Te6edf3indexTb4b4b4: Tffa657IntTb4b4b4, Te6edf3itemTb4b4b4: Te6edf3TTb4b4b4, Te6edf3isDraggingTb4b4b4: Tffa657BooleanTb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4,
Tb4b4b4) Tff7b72= Te6edf3itemsIndexedTb4b4b4(
Te6edf3items Tff7b72= Te6edf3itemsTb4b4b4,
Te6edf3key Tff7b72= Te6edf3keyTb4b4b4,
Te6edf3contentType Tff7b72= Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3_ Tff7b72-Tff7b72> Te6edf3DRAG_DROP_CONTENT_TYPE Tb4b4b4}Tb4b4b4,
Te6edf3itemContent Tff7b72= Tb4b4b4{ Te6edf3indexTb4b4b4, Te6edf3item Tff7b72-Tff7b72>
Te6edf3DraggableItemTb4b4b4(
Te6edf3dragDropState Tff7b72= Te6edf3dragDropStateTb4b4b4,
Te6edf3index Tff7b72= Te6edf3indexTb4b4b4,
Te6edf3content Tff7b72= Tb4b4b4{ Te6edf3isDragging Tff7b72-Tff7b72> Te6edf3itemContentTb4b4b4(Te6edf3indexTb4b4b4, Te6edf3itemTb4b4b4, Te6edf3isDraggingTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Served by rngit 1.5.0 - Generated in 0.09s